Gem5 的 TimeBuffer 数据结构
==================================

读 O3CPU 的时候，我们遇到一个叫 TimeBuffer 的数据结构。从名字可以看出来，
这个数据结构用于模拟数据在一定延迟之下，在部件之间的传送。同样在 MinorCPU 中，
也有一个叫 Latch 的结构，事实上是对 TimeBuffer 进行了一个封装。

通过读 TimeBuffer 的代码，可以发现，其实它就是构造了一个环形队列，同时用 wire
指针可以访问这个队列里的每一个元素。在每个时间单位的 advance() 操作之后，该队列的
内部指针自增，使得 wire 指向的内容自动变为一个时间单位后的内容。

我把 timebuf.hh 复制出来单独使用，写了一个小的测试程序 `<testbuf.cpp>`__.

可以看出，我的 fromPrev wire 用于访问 3 个时间单位之前写入至 TimeBuffer 的数据，
从而在这个 TimeBuffer advance() 3 次之后，fromPrev 就得到通过 toNext wire 写进去的数据，
再 advance() 一次，fromPrev 就不再指向这个数据了。

此外，把代码改为以下形式结果相同::

	TimeBuffer<MyClass> mybuf(0, 3);

	TimeBuffer<MyClass>::wire toNext = mybuf.getWire(3);
	TimeBuffer<MyClass>::wire fromPrev = mybuf.getWire(0);
